package com.tmc.service.inthotel;

import java.util.List;

import javax.xml.datatype.XMLGregorianCalendar;

import com.tmc.bean.inthotel.hotel.CXLPolicies;
import com.tmc.bean.inthotel.hotel.City;
import com.tmc.bean.inthotel.hotel.Continent;
import com.tmc.bean.inthotel.hotel.Country;
import com.tmc.bean.inthotel.hotel.Hotel;
import com.tmc.bean.inthotel.hotel.HotelAmenities;
import com.tmc.bean.inthotel.hotel.HotelDescription;
import com.tmc.bean.inthotel.hotel.HotelImages;
import com.tmc.bean.inthotel.hotel.HotelInfo;
import com.tmc.bean.inthotel.hotel.HotelPolicies;
import com.tmc.bean.inthotel.hotel.HotelPromotionList;
import com.tmc.bean.inthotel.hotel.HotelRoomFacilities;
import com.tmc.bean.inthotel.hotel.HotelRoomTypes;
import com.tmc.bean.inthotel.hotel.HotelVoucherRemark;
import com.tmc.bean.inthotel.hotel.State;
import com.tmc.entity.inthotel.ToDestinationResult;
import com.tmc.entity.inthotel.ToHotelTbl;
import com.tourico.schemas.webservices.hotelv3.AmendRequest;
import com.tourico.schemas.webservices.hotelv3.BookV3Request;
import com.tourico.schemas.webservices.hotelv3.CostAmendRequest;
import com.tourico.schemas.webservices.hotelv3.SearchHotelsByDestinationIdsRequest;
import com.tourico.schemas.webservices.hotelv3.SearchHotelsByIdRequest;
import com.tourico.schemas.webservices.hotelv3.SearchRequest;
import com.tourico.webservices.CancelReservationResponse;
import com.tourico.webservices.GetCancellationFeeResponse;
import com.tourico.webservices.GetCancellationPoliciesResponse;
import com.tourico.webservices.hotelv3.ArrayOfFeature;
import com.tourico.webservices.hotelv3.ArrayOfHotelID;
import com.tourico.webservices.hotelv3.BookHotelV3Response;
import com.tourico.webservices.hotelv3.CheckAvailabilityAndPricesResponse;
import com.tourico.webservices.hotelv3.CostAmendResponse;
import com.tourico.webservices.hotelv3.DoAmendResponse;
import com.tourico.webservices.hotelv3.SearchHotelsByDestinationIdsResponse;
import com.tourico.webservices.hotelv3.SearchHotelsByIdResponse;
import com.tourico.webservices.hotelv3.SearchHotelsResponse;
import com.touricoholidays.wsdestinations._2008._08.datacontracts.ActivitiesByDestinationResponse;
import com.touricoholidays.wsdestinations._2008._08.datacontracts.Destination;
import com.touricoholidays.wsdestinations._2008._08.datacontracts.DestinationResponse;
import com.touricoholidays.wsdestinations._2008._08.datacontracts.HotelsByDestinationResponse;

public interface TouricoHolidayService {
	
	public List<State> getAllState();
	
	public void updateAllState(List<State> states);
	
	public List<Country> getAllCountry();
	
	public void updateAllCountry(List<Country> countries);
	
	public List<Continent> getAllContinent();
	
	public void updateAllContinent(List<Continent> continents);
	
	public void saveAllHotelVoucherRemark(List<HotelVoucherRemark> hotelVoucherRemark);
	
	public void updateAllHotelVoucherRemark(List<HotelVoucherRemark> hotelVoucherRemark);
	
	public List<HotelVoucherRemark> findAllHotelVoucherRemark();
	
	public void saveAllHotelRoomTypes(List<HotelRoomTypes> hotelRoomTypes);
	
	public void updateAllHotelRoomTypes(List<HotelRoomTypes> hotelRoomTypes);
	
	public List<HotelRoomTypes> findAllHotelRoomTypes();
	
	public void saveAllHotelRoomFacilities(List<HotelRoomFacilities> hotelRoomFacilities);
	
	public void updateAllHotelRoomFacilities(List<HotelRoomFacilities> hotelRoomFacilities);
	
	public List<HotelRoomFacilities> findAllHotelRoomFacilities();
	
	public void saveAllHotelPromotionList(List<HotelPromotionList> hotelPromotionList);
	
	public void updateAllHotelPromotionList(List<HotelPromotionList> hotelPromotionList);
	
	public List<HotelPromotionList> findAllHotelPromotionList();
	
	public void saveAllHotelPolicies (List<HotelPolicies> hotelPolicies);
	
	public void updateAllHotelPolicies (List<HotelPolicies> hotelPolicies);
	
	public List<HotelPolicies> findAllHotelPolicies();
	
	public void saveAllHotelInfo (List<HotelInfo> hotelInfos);
	
	public void updateAllHotelInfo (List<HotelInfo> hotelInfos);
	
	public List<HotelInfo> findAllHotelInfo();
	
	public void saveAllHotelImages (List<HotelImages> hotelImages);
	
	public void updateAllHotelImages (List<HotelImages> hotelImages);
	
	public List<HotelImages> findAllHotelImages();
	
	public void saveAllHotelDescription (List<HotelDescription> hotelDescriptions);
	
	public void updateAllHotelDescription (List<HotelDescription> HotelDescriptions);
	
	public List<HotelDescription> findAllHotelDescription();
	
	public void selectAndInsert(List<HotelVoucherRemark> hotelVoucherRemarks);
	
	public Hotel findHotelByHotelId(Integer hotelId);
	
	public List<Hotel> findHotelByHotelName(String hotelName,String hotelNameCN,Integer source);
	
	public void saveAllHotel(List<Hotel> hotels);
	
	public void updateAllHotel(List<Hotel> hotels);
	
	public List<Hotel> findAllHotel();
	
	public void saveAllHotelAmenities(List<HotelAmenities> hotelAmenities);
	
	public void updateAllHotelAmenities(List<HotelAmenities> hotelAmenities);
	
	public List<HotelAmenities> findAllHotelAmenities();
	
	public void saveAllCXLPolicies(List<CXLPolicies> cXLPolicies);
	
	public void updateAllCXLPolicies(List<CXLPolicies> cXLPolicies);
	
	public List<Hotel> getAllHotel();
	
	public List<City> getAllCity();
	
	public String queryContient(String countryName);
	
	public ToHotelTbl queryFromToHotelTbl(String hotelName);
	
	public ToDestinationResult queryAllHotelByDestination();
	
	public DestinationResponse getDestination(Destination destination);
	
	public HotelsByDestinationResponse getHotelsByDestination(Destination destination);
	
	public ActivitiesByDestinationResponse getActivitiesByDestination(Destination destination);
	
	public SearchHotelsResponse searchHotels(SearchRequest request,ArrayOfFeature features);
	
	public SearchHotelsByIdResponse searchHotelsById(SearchHotelsByIdRequest request,ArrayOfFeature features);
	
	public SearchHotelsByDestinationIdsResponse searchHotelsByDestinationIds(SearchHotelsByDestinationIdsRequest request,ArrayOfFeature features);
	
	public String getHotelDetailsV3(ArrayOfHotelID hotelIds,ArrayOfFeature features);
	
	public CheckAvailabilityAndPricesResponse checkAvailabilityAndPrices(SearchHotelsByIdRequest request,ArrayOfFeature features);
	
	//public TermAndConditionsResult getTermAndConditions(TermAndConditionsRequest hotelId);
	
	public BookHotelV3Response bookHotelV3(BookV3Request request,ArrayOfFeature features);
	
	public CostAmendResponse costAmend(CostAmendRequest request,ArrayOfFeature features);
	
	public DoAmendResponse doAmend(AmendRequest request,ArrayOfFeature features);
	
	public CancelReservationResponse cancelReservation(int nResID);
	
	public GetCancellationFeeResponse getCancellationFee(int nResID,XMLGregorianCalendar clxDate);
	
	public GetCancellationPoliciesResponse getCancellationPolicies(Integer choose,int nResId,int hotelId,int hotelRoomTypeId,XMLGregorianCalendar dtCheckIn,XMLGregorianCalendar dtCheckOut);
	
}
